const RoleModel = require('../models/roleModel');
const appError = require('../utils/appError');

class RoleService {
  // 创建角色
  async create(data, created_by) {
    // 验证必填字段
    if (!data.name || !data.code) {
      appError(400, '角色名称和编码是必填项', {
        name: !data.name ? '角色名称是必填项' : null,
        code: !data.code ? '角色编码是必填项' : null
      });
    }

    // 创建新角色
    const newRole = new RoleModel({ ...data, created_by });
    await newRole.save();
    return newRole;
  }

  // 更新角色信息
  async update(data, updated_by) {
    const role_id = data.id
    const role = await RoleModel.findOne({ role_id });
    if (!role) {
      appError(400, '角色不存在');
    }
    await RoleModel.updateOne({ role_id }, { $set: { ...data, updated_by } });
    return await RoleModel.findOne({ role_id });
  }

  // 删除角色
  async delete(role_id) {
    const role = await RoleModel.findOne({ role_id });
    if (!role) {
      appError(400, '角色不存在');
    }
    await RoleModel.deleteOne({ role_id });
  }

  // 获取单个角色
  async findOne(role_id) {
    return await RoleModel.findOne({ role_id });
  }

  // 获取所有角色
  async findAll() {
    return await RoleModel.find();
  }
}

module.exports = new RoleService();